
package com.shop.cereshop.app.page.product;

import com.shop.cereshop.app.annotation.KeepLongAsNumber;
import com.shop.cereshop.commons.domain.buyer.CereBuyerReceive;
import com.shop.cereshop.commons.domain.product.SkuName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Set;

@Data
@ApiModel(value = "ProductDetailVO", description = "商品详情返回数据")
public class ProductDetailVO {

  // ====================================店铺相关信息=========
  @ApiModelProperty(value = "店铺id")
  @KeepLongAsNumber
  private Long shopId;

  @ApiModelProperty(value = "店铺名称")
  private String shopName;

  @ApiModelProperty(value = "店铺logo")
  private String shopLogo;

  @ApiModelProperty(value = "店铺评分")
  private BigDecimal shopScore;

  @ApiModelProperty(value = "店铺营业时间字符串")
  private String shopWeeksStr;

  @ApiModelProperty(value = "店铺营业时间")
  private List<String> shopWeeks;

  // ===============================收藏相关信息========================
  @ApiModelProperty(value = "是否收藏")
  private Integer ifCollect;

  @ApiModelProperty(value = "收藏id")
  @KeepLongAsNumber
  private Long collectId;

  // ==============================商品相关信息====================
  @ApiModelProperty(value = "商品id")
  @KeepLongAsNumber
  private Long productId;

  @ApiModelProperty(value = "商品名称")
  private String productName;

  @ApiModelProperty(value = "商品简介")
  private String productBrief;

  @ApiModelProperty(value = "商品详情描述")
  private String productText;

  @ApiModelProperty(value = "商品图片数组")
  private List<String> images;

  @ApiModelProperty(value = "商品虚拟销量")
  @KeepLongAsNumber
  private Long fictitiousNumber;

  @ApiModelProperty(value = "商品实际销售量")
  @KeepLongAsNumber
  private Long salesVolume;

  @ApiModelProperty(value = "商品总销量")
  @KeepLongAsNumber
  private Long finalSales;

  @ApiModelProperty(value = "商品有效天数")
  private Integer validDays;

  @ApiModelProperty(value = "商品服务标签")
  private List<String> productLabels;

  // ================用户相关信息==================

  @ApiModelProperty(value = "收货地址")
  private CereBuyerReceive receive;

  // ===============规格相关信息===================

  @ApiModelProperty(value = "规格映射关系")
  private Map<String, SkuVO> map;

  @ApiModelProperty(value = "规格映射关系")
  private Map<String, List<SkuVO>> skuMap;

  @ApiModelProperty(value = "规格数据")
  private List<SkuName> names;

  @ApiModelProperty(value = "规格名称数组")
  private Set<String> skuNames;

  //==================优惠券======================
  @ApiModelProperty(value = "优惠券数据")
  private List<ProductCoupon> markTools;

  @ApiModelProperty(value = "优惠券数据")
  private List<ProductCoupon> shopMarkTools;

  @ApiModelProperty(value = "优惠券拼接字段")
  private String couponSplicing;

  @ApiModelProperty(value = "优惠券图片数组")
  private List<String> couponImages;

}